package com.mk.enums;

import org.osgl.util.C;

import java.util.Map;

/**
 * 错误码共6位，各位说明：
 * 第一位 ： 1或者2 1=系统异常，只能用SystemException抛出 ，异常信息对用户不可见; 2=服务异常，只能用UserException抛出，异常信息对用户可见;
 * 第二+三位 ：对应模块，例如店铺登陆 已经占据了 06，那么其他模块不能再占用
 * 第4、5、6位：对应错误码编码，同一个模块下必须唯一
 */
@SuppressWarnings("unused")
public enum ErrorCode {
    E100001("100001", "统一系统异常状态码"),
    //通用
    E200000("200000", "数据不完整异常"),
    //通用
    E200001("200001", "统一用户异常状态码"),

    //登陆
    E201002("201002", "登录失败，请检查用户名和密码"),
    E201003("201003", "会话过期，请重新登陆"),
    E201004("201004", "您无权登陆此系统"),
    E201005("201005", "您的账号不存在"),
    E201006("201006", "手机号格式不正确"),
    E201007("201007", "您的账号已经被冻结"),
    E201008("201008", "您的旧密码错误，请重新输入"),
    E201009("201009", "验证码错误"),
    E201010("201010", "您只能为同一公司的用户重置密码"),

    //员工管理
    E201011("201011", "您不可以对自己的账号进行删除操作！"),
    E201012("201012", "管理员账户不可以删除"),

    //注册
    E201013("201013", "系统角色模板数据为空配置，请联系管理员！"),
    E201016("201016", "请联系管理员添加试用版本！"),
    E201015("201015", "手机号重复！"),
    E201014("201014", "验证码不可为空！"),

    //商品
    E202001("202001", "该商品已经有用户购买,不能修改"),

    //设置
    E203001("E203001", "快递编号重复！"),
    E203002("E203002", "快递公司正在使用中！"),

    //导入商品错误
    E202002("202002", "导入商品重复"),
    E202003("202003", "导入文件格式错误"),
    //订单发货重复
    E301001("301001", "订单存在异常，请执行修正订单操作。"),
    //订单状态异常
    E301002("301002", "订单状态异常，请与管理员联系"),
    //订单状态异常
    E301003("301003", "操作失败，网点尚未发货"),
    //订单状态异常
    E301004("301004", "操作失败，售后订单状态异常"),

    E301005("301005", "该订单售后中，不能发货"),
    E301006("301006", "该订单已经售后完成无需发货"),

    E301007("301007", "不可重复设置发货区域"),
    //提货码不存在
    E302001("302001", "提货码不存在"),

    E401001("401001", "微信支付错误"),
    E401002("401002", "微信转账错误"),

    E501001("501001", "订单已支付，请误重复操作！"),

    E600001("600001", "权限不足，请充值会员！"),

    //region 砍价开始
    E901001("901001", "您要参加的活动不存在"),
    E901002("901002", "该团还未开启"),
    E901003("901003", "该团成员已满"),
    E901004("901004", "该活动参与已过期,不能帮砍了"),
    E901005("901005", "砍价次数已达上限"),
    E901006("901006", "您的砍价次数已用完，不能再砍了"),
    E901007("901007", "您已经帮砍过，不能再砍了"),

    E901010("901010", "您已经参加过该活动了"),
    //endregion

    //region 佣金开始
    E902000("902000", "您有正在进行中的活动"),
    E902001("902001", "您要参加的活动不存在"),
    E902002("902002", "该团还未开启"),
    E902003("902003", "该团成员已满"),
    E902004("902004", "该活动参与已过期,不能支付"),

    E902010("902010", "您已经参加过该活动了"),
    //endregion

    //region 拼享开始
    E903000("903000", "您有正在进行中的活动"),
    E903001("903001", "您要参加的活动不存在"),
    E903002("903002", "该团还未开启"),
    E903003("903003", "该团成员已满"),
    E903004("903004", "该活动参与已过期,不能支付"),
    E903005("903005", "来晚一步，可开团数量已达上限！不要灰心，下次再抢吧！"),

    E903010("903010", "您已经参加过该活动了"),
    //endregion

    //region 分享开始
    E904000("904000", "您有正在进行中的活动"),
    E904001("904001", "您要参加的活动不存在"),
    E904002("904002", "该团还未开启"),
    E904003("904003", "该团成员已满"),
    E904004("904004", "该活动参与已过期,不能支付"),

    E904010("904010", "您已经参加过该活动了"),
    //endregion

    //region 秒杀活动
    E905000("905000", "您参加的活动不处于进行中,请刷新够重试"),

    E905001("905001", "您参与的活动名额不足"),

    //endregion

    //region 试用活动
    E906000("906000", "您已经试用过该活动"),

    //endregion
    //region 报名活动
    E907000("907000", "您已经参加过该报名活动"),
    //endregion

    //货位
    E201017("201017", "{pdname}已经超过分配货位数上限{count}!");

    private final String status;
    private final String message;

    ErrorCode(String status, String message) {
        this.status = status;
        this.message = message;
    }

    public String status() {
        return this.status;
    }

    public String message() {
        return this.message;
    }

    @Override
    public String toString() {
        return this.status;
    }

    public int value() {
        return Integer.parseInt(this.status);
    }

    public Map map() {
        return C.Map("status", this.status, "message", this.message);
    }


}